package Java8新日期时间API;

import org.junit.Test;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;

/*
     DateTimeFormatter类(格式化与解析日期或时间) --> 类似于SimpleDateFormat
        格式化方法:
             预定义的标准格式,如:ISO_LOCAL_DATE_TIME、ISO_LOCAL_DATE、ISO_LOCAL_TIME
             本地化相关的格式,如:ofLocalizedDateTime(FormatStyle.LONG)
             自定义的格式,如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
        常用方法:
            ofPattern(String pattern):静态方法,返回一个指定字符串格式的 DateTimeFormatter
            format(TemporalAccessor t):格式化一个日期、时间、返回字符串
            parse(CharSequence text):将指定格式的字符序列解析为一个日期、时间
 */
public class DateTest03 {

    @Test
    public void test1(){
        //预定义的标准格式
        DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        //格式化 日期 --> 字符串
        LocalDateTime localDateTime = LocalDateTime.now();
        String str1 = formatter.format(localDateTime);
        System.out.println(localDateTime);
        System.out.println(str1);
        //解析  字符串 --> 日期
        TemporalAccessor parse = formatter.parse("2020-01-03T08:19:29.495");//由于返回值是不确定的,所以用接口进行接收
        System.out.println(parse);
    }

    @Test
    public void test2(){
        LocalDateTime localDateTime = LocalDateTime.now();
        /*
            本地化相关的格式
            参数适用于:
                FormatStyle.LONG   2020年1月3日 上午08时29分28秒
                FormatStyle.SHORT  20-1-3 上午8:28
                FormatStyle.MEDIUM  2020-1-3 8:30:25
         */
        DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
        String str1 = formatter1.format(localDateTime);
        System.out.println(str1);

        /*
            参数适用于:
                FormatStyle.FULL  2020年1月3日 星期五
                FormatStyle.MEDIUM  2020-1-3
                FormatStyle.LONG  2020年1月3日
                FormatStyle.SHORT  20-1-3
         */
        DateTimeFormatter formatter2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
        String str2 = formatter2.format(localDateTime);
        System.out.println(str2);
    }

    @Test
    public void test3(){
        /*
            自定义的格式(重点):yyyy-MM-dd hh:mm:ss
         */
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        //格式化
        String str = formatter.format(LocalDateTime.now());
        System.out.println(str);

        //解析
        TemporalAccessor parse = formatter.parse("2020-01-03 08:45:07");
        System.out.println(parse);
    }
}
